//
//  CCDB.h
//  CCKit
//
//  Created by tucici on 2019/11/28.
//  Copyright © 2019 tucici. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface CCDB : NSObject

/// 数据库单例方法
+ (instancetype)db;
/// 打开数据库
/// @param name 库名，例如 数据库Receipt.sqlite，name=Receipt
- (void)openDM:(NSString *)name;

/// 创建表
/// @param tableName 要创建的表名，
/// @param array 字段数组
- (void)createTable:(NSString *)tableName withOptions:(NSArray *)array;

/// 插入数据
/// @param tableName 要插入数据的表名
/// @param dict 要插入的数据，以字典形式传递
- (void)insert:(NSString *)tableName withDict:(NSDictionary *)dict;

/// 更新数据
/// @param tableName 要更新数据的表名
/// @param dict 要更新的数据，以字典形式传递
/// @param conditionsDict 被更新数据的条件，以字典的形式传递，例如 where age='18', 字典传递conditionsDict=@{@"age":@"'18'"}
- (void)update:(NSString *)tableName withDict:(NSDictionary *)dict conditionsDict:(NSDictionary*)conditionsDict;

/// 删除数据
/// @param tableName 要删除数据的表名
/// @param dict 被删除数据的条件，以字典形式传递，例如 where age='18'，字典传递dict=@{@"age"=@"'18'"}
- (void)delet:(NSString *)tableName withDict:(NSDictionary *)dict;

/// 查找数据
/// @param tableName 要查找数据的表名
/// @param array 要查找的字段名，以数组形式传递，例如 要查找表里的age,name,height三个字段数据，array=@[@"age",@"name",@"height"];
/// @param conditionsDict 被查找的条件，以字典形式传递，例如 where Gender='male'
/// @param block 返回查找的数据，以数组形式返回
- (void)select:(NSString *)tableName withOptions:(nullable NSArray *)array conditionsDict:(NSDictionary*)conditionsDict complete:(void(^) (NSMutableArray *array))block;

/// 查找数据
/// @param tableName 要查找数据的表名
/// @param array 要查找的字段名，以数组形式传递，例如 要查找表里的age,name,height三个字段数据，array=@[@"age",@"name",@"height"];
/// @param conditionsDict 被查找的条件，以字典形式传递，例如 where Gender='male'
/// @return array 返回查找的数据，以数组形式返回
- (NSMutableArray *)select:(NSString *)tableName withOptions:(nullable NSArray *)array conditionsDict:(NSDictionary*)conditionsDict;

//- (void)insertData:(NSDictionary *)dataDict withName:(NSString *)tableName;
/// 关闭数据库
- (void)closeDB;
@end

NS_ASSUME_NONNULL_END
